#include "ThreadPool.hpp"

int main(int argc, char *argv[])
{
    ThreadPool pool(3);

    // std::thread thd1([&pool]{
    //     for (int i = 1; i < 10; ++i)
    //     {
    //         auto thdId = std::this_thread::get_id();
    //         pool.AddTask([thdId]{
    //             std::cout << "thread <1> id:" << thdId << std::endl;
    //         });
    //         std::this_thread::sleep_for(std::chrono::seconds(1));
    //     }
    // });

    // std::thread thd2([&pool]{
    //     for (int i = 1; i < 10; ++i)
    //     {
    //         auto thdId = std::this_thread::get_id();
    //         pool.AddTask([thdId]{
    //             std::cout << "thread <2> id:" << thdId << std::endl;
    //         });
    //     }
    // });
    getchar();
    
    for (int i = 1; i < 10; ++i)
    {
        pool.AddTask([]{
            auto thdId = std::this_thread::get_id();
            std::cout << "thread id: <" << thdId << "> " << std::endl;
        });
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }

    std::this_thread::sleep_for(std::chrono::seconds(2));
    getchar();
    pool.Stop();
    // thd1.join();
    // thd2.join();
    return 0;
}